//可以使用nodejs内置的http模块创建web服务器

//使用第三方包(程序)express快速创建web服务器

//需要使用 npm i express 下载这个包
//导入express这个包，所有第三方包都需要用require( '包名'）导入到程序中，才能使用var express = nequire( "express")
var express = require("express");
var { expressjwt } = require('express-jwt')
var multer = require('multer');
var path = require('path')
var useRouter = require("./route/useRouter");
//1.创建web应用
var app = express();

// 配置存储引擎
var storage = multer.diskStorage({
    // destination负责管理文件的存储位置
    destination: (req, file, callback) => {
        callback(null, 'server/static/uploads');//这个位置的文件夹必须手动创建
    },
    // filename 负责管理文件的名字
    filename: (req, file, callback) => {
        console.log(file.originalname);//file.originalname 原始文件名
        callback(null, new Date().getTime() + path.extname(file.originalname))
    }
})

// 应用磁盘存储引擎 让上一步配置的磁盘存储引擎生效
var upload = multer({ storage })
app.use(upload.single('avatar'));
// 设置token验证的中间件
app.use(expressjwt({
    secret: '1234',//密钥
    algorithms: ['HS256', 'RS256'],//算法
}).unless({ path: ['/api/user/login', '/api/user/register', '/api/role/list'] })
)

app.use(express.json());
app.use(express.urlencoded({ extended: false }));

// 注册文件上传的中间件 前后端必须指定同样的名字 single一次只能接收一个文件



// 注册子路由 但凡是"/api" 开头的请求，都找useRouter这个子路由来提供服务
app.use('/api', useRouter)
//2.创建静态资源服务器（托管静态资源，js, css,图片,字体...)
//  app.use()注册中间件， express.static是托管静态资源的中间件
app.use(express.static('static'));
//3.创建api接口服务器

//4.设置监听端口(目的是为了时刻在监听前端请求,提供服务|
app.listen(6666, () => {
    console.log("服务器已经运行在6666端口")
})